/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ec.com.farmaciassantamartha.comprobantes.portal.sql;

import ec.com.farmaciassantamartha.comprobantes.portal.bean.Usuario;
import ec.com.farmaciassantamartha.comprobantes.portal.util.ConexionSQL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;

/**
 *
 * @author Rolando
 */
public class UsuarioSQL {

    public static void insertar(Usuario u) {
        PreparedStatement pst = null;
        Connection cn = null;
        try {
            cn = ConexionSQL.getConexion();
            String key = ResourceBundle.getBundle("ec/com/farmaciassantamartha/comprobantes/portal/resources/seguridad").getString("key");
            pst = cn.prepareStatement("INSERT INTO usuario VALUES(null,?,AES_ENCRYPT(?,'" + key + "'),?,?)");
            pst.setString(1, u.getNombre());
            pst.setString(2, u.getPassword());
            pst.setString(3, u.getRazonSocial());
            pst.setString(4, u.getRuc());
            pst.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (cn != null) {
                try {
                    cn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }

    public static Usuario obtener(String nombre, String password) {
        Usuario u = null;
        PreparedStatement pst = null;
        Connection cn = null;
        try {
            cn = ConexionSQL.getConexion();
            String key = ResourceBundle.getBundle("ec/com/farmaciassantamartha/comprobantes/portal/resources/seguridad").getString("key");
            pst = cn.prepareStatement("SELECT * FROM usuario WHERE nombre=? AND password=AES_ENCRYPT(?,'" + key + "')");
            pst.setString(1, nombre);
            pst.setString(2, password);
            ResultSet rs = pst.executeQuery();
            // Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla.
            while (rs.next()) {
                u = new Usuario();
                u.setId(rs.getInt(1));
                u.setNombre(rs.getString(2));
                u.setRazonSocial(rs.getString(4));
                u.setRuc(rs.getString(5));
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
            if (cn != null) {
                try {
                    cn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
        return u;
    }

    public static void main(String[] args) {
        //Insertar
        Usuario u = new Usuario("admin", "1234", "LA CASA DEL CABLE", "0991515011001");
        insertar(u);
        //--
        //Recuperar
//        Usuario u = obtener("admin", "1234");
        System.out.println(u.getRazonSocial() + "-" + u.getRuc());
        //--
    }
}
